﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using TicketsPhone.Domain.Access;
using TicketsPhone.Domain.Entities;

namespace TicketsPhone.Domain.Access
{
    public class ModuloRepositorio : ConexionSql<Modulo>,  ICrud<Modulo>
    {
        
        /// <summary>
        /// Retorna todos los módulos activos en los que el perfil del usuario tiene permisos de lectura
        /// </summary>
        /// <param name="idPerfil">id del perfil del usuario que se desea buscar</param>
        /// <returns>Listado de modulos encontrados</returns>
        public List<Modulo> ObtenerModulosPermitidos(int idPerfil)
        {
            CrearComando("spModulo_ObtenerModulosPermitidos");
            AgregarParametro("@IdPerfil", idPerfil, System.Data.ParameterDirection.Input, System.Data.DbType.Int32);
            ExecuteReader();

            List<Modulo> lista = new List<Modulo>();

            while (Read())
            {
                Modulo mod = new Modulo();
                mod.Nombre = GetValue("Nombre").ToString();
                mod.IdModulo = int.Parse(GetValue("IdModulo").ToString());
                lista.Add(mod);
            }

            return lista;
        }

        public void GuardarTransaccion(TipoTransaccion tipoTransaccion)
        {
            throw new NotImplementedException();
        }


        public int Crear()
        {
            throw new NotImplementedException();
        }

        public bool Editar()
        {
            throw new NotImplementedException();
        }

        public bool Eliminar(int id)
        {
            throw new NotImplementedException();
        }

        public Modulo Cargar(int id)
        {
            throw new NotImplementedException();
        }

        public List<Modulo> ObtenerTodos()
        {
            CrearComando("spModulo_Obtener");
            ExecuteReader();

            List<Modulo> lista = new List<Modulo>();

            while (Read())
            {
                Modulo mod = new Modulo();
                mod.Nombre = GetStringValue("Nombre");
                mod.IdModulo = GetIntValue("IdModulo");
                lista.Add(mod);
            }

            return lista;
        }

        public List<Modulo> Filtrar()
        {
            throw new NotImplementedException();
        }
    }
}
